package edzest.basic;

import java.util.Scanner;

import edzest.model.SungJukVO;
import edzest.service.JDBCSungJuk;

public class J19_SungJuk_v6 {
	
	private static final String title = 
			"JDBC를 이용한 성적프로그램";
	private static final String menu = 
			">>> 추가 (1) 조회 (2) 수정 (3) 삭제 (4) 종료 (0)";
	private static final String addmsg = 
			"이름, 국어, 영어, 수학 순으로 입력하세요";
	private static final String modmsg1 = 
			"수정할 데이터 번호를 입력";
	private static final String modmsg2 = 
			"수정할 데이터를 번호를 이름, 국어, 영어, 수학 순으로 입력";
	private static final String delmsg = 
			"삭제할 데이터 번호를 입력하세요";
	
	public static void main(String[] args) {
		// 오라클 데이터 베이스를 이용한 성적 처리
		// ArraySungJuk 대신 JDBCSungJuk으로 변경
		JDBCSungJuk sjsrv = new JDBCSungJuk();
		Scanner sc = new Scanner(System.in);
		
		while(true){
			System.out.println( title ); 
			System.out.println( menu );
			switch( sc.nextInt() ){ // sc.nextInt() 키보드로부터 번호 입력받음
				case 0: sc.close(); 
					System.exit(0); 
					// 프로그램 종료
					break;
				case 1: addSungJuk(sc, sjsrv);
					break;
				case 2: showSungJuk(sjsrv); 
					break;
				case 3: modifySungJuk(sc, sjsrv); // 괄호에 변수받는거 불편하니까 다음 버전에 수정할거임
					break;
				case 4: removeSungJuk(sc, sjsrv); 
					break;
			}
		}
		
	} // end main
	
	private static void removeSungJuk(Scanner sc, JDBCSungJuk sjsrv) {
		System.out.println( sjsrv.readSungJuk() );
			// 삭제하기 전에 전체자료를 먼저 출력
		System.out.println( delmsg );
		String sjno = sc.next();
			// 삭제할 학생번호 입력
		if( sjsrv.removeSungjuk(sjno) ) // removeSungjuk의 반환형 boolean으로 한 이유
			System.out.println( "성공적으로 데이터 삭제됨!" );;
	} // end removeSungJuk

	private static void modifySungJuk(Scanner sc, JDBCSungJuk sjsrv) {
		System.out.println( sjsrv.readSungJuk() );
		System.out.println( modmsg1 );
		String sjno = sc.next(); // 수정할 학생번호 입력
		System.out.println( modmsg2 );
		SungJukVO sj = new SungJukVO(sc.next(), 
				sc.nextInt(), sc.nextInt(), sc.nextInt());
		sj.setSjno( sjno ); // !!
		if( sjsrv.modifySungJuk(sj) ) // modifySungJuk의 반환형 boolean으로 한 이유
			System.out.println( "성공적으로 데이터 수정됨!" );; 
	} // end modifySungJuk

	public static void addSungJuk( Scanner sc, JDBCSungJuk sjsrv ) {
		System.out.println( addmsg );
		SungJukVO sj = new SungJukVO(sc.next(), 
				sc.nextInt(), sc.nextInt(), sc.nextInt());
		
		// 입력받은 데이터를 배열에 저장
		sjsrv.newSungJuk(sj);
	} // end addSungJuk 성적데이터 입력받아 sungjuk테이블에 저장
	
	public static void showSungJuk( JDBCSungJuk sjsrv ){
		System.out.println( sjsrv.readSungJuk() );
	} // end showSungJuk  sungjuk테이블에 저장된 성적데이터 모두 출력

}
